导航菜单
首页 >  PHP  > PHP: 比较

PHP: 比较

比较运算符

比较运算符,如同它们名称所暗示的,允许对两个值进行比较。还可以参考 PHP 类型比较表看不同类型相互比较的例子。

比较运算符例子 名称 结果 $a == $b 等于 true,如果类型转换后 $a 等于 $b。 $a === $b 全等 true,如果 $a 等于 $b,并且它们的类型也相同。 $a != $b 不等 true,如果类型转换后 $a 不等于 $b。 $a $b 不等 true,如果类型转换后 $a 不等于 $b。 $a !== $b 不全等 true,如果 $a 不等于 $b,或者它们的类型不同。 $a < $b 小于 true,如果 $a 严格小于 $b。 $a > $b 大于 true,如果 $a 严格大于 $b。 $a = $b 大于等于 true,如果 $a 大于或者等于 $b。 $a $b 太空船运算符(组合比较符)当$a小于、等于、大于 $b时 分别返回一个小于、等于、大于0的 int 值。

当两个操作对象都是 数字字符串, 或一个是数字另一个是 数字字符串, 就会自动按照数值进行比较。 此规则也适用于 switch 语句。 当比较时用的是 === 或 !==, 则不会进行类型转换——因为不仅要对比数值,还要对比类型。

警告

PHP 8.0.0 之前,如果 string 与数字或者数字字符串进行比较, 则在比较前会将 string 转化为数字。 在如下示例中会出现不可预料的结果:

以上示例在 PHP 7 中的输出:

bool(true)bool(true)bool(true)bool(true)0

以上示例在 PHP 8 中的输出:

bool(false)bool(true)bool(true)bool(true)a

对于多种类型,比较运算符根据下表比较(按顺序)。

比较多种类型运算数 1 类型 运算数 2 类型 结果 null 或 string string 将 null 转换为 "",进行数字或词汇比较 bool 或 null 任何其它类型 转换为 bool,false < true object object内置类可以定义自己的比较,不同类不能比较,相同的类查看对象比较string、resource、int、float string、resource、int、float 将字符串和资源转换成数字,按普通数学比较 array array成员越少的数组越小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例)object 任何其它类型 object 总是更大 array 任何其它类型 array 总是更大

示例 #1 Boolean/null comparison

示例 #2 标准数组比较代码

警告 比较浮点数

由于浮点数 float 的内部表达方式,不应比较两个浮点数float是否相等。

相关推荐: